Guava লাইব্রেরি Immutable Collections (ImmutableList, ImmutableSet, ImmutableMap) এর মাধ্যমে Java প্রোগ্রামে ডেটা মিউটেবল (পরিবর্তনযোগ্য) হওয়ার ঝুঁকি কমায়। Immutable Collections ব্যবহার করলে ডেটা Thread-Safe হয় এবং অনিচ্ছাকৃত পরিবর্তন থেকে সুরক্ষিত থাকে।
ImmutableList
ImmutableList কী?
ImmutableList হল এমন একটি তালিকা (list), যা তৈরি হওয়ার পর পরিবর্তন করা যায় না। এটি ArrayList-এর মতো কাজ করে কিন্তু মিউটেবল নয়।
ImmutableList তৈরি করা
import com.google.common.collect.ImmutableList;
public class ImmutableListExample {
public static void main(String[] args) {
ImmutableList<String> fruits = ImmutableList.of("Apple", "Banana", "Guava");
System.out.println(fruits);
// ImmutableList Builder ব্যবহার
ImmutableList<String> vegetables = ImmutableList.<String>builder()
.add("Carrot")
.add("Potato")
.add("Tomato")
.build();
System.out.println(vegetables);
// fruits.add("Mango"); // এটি কম্পাইল-টাইমে এরর দেবে, কারণ ImmutableList পরিবর্তন করা যায় না।
}
}
ImmutableSet
ImmutableSet কী?
ImmutableSet হল এমন একটি সেট (set), যা তৈরি হওয়ার পর পরিবর্তন করা যায় না। এটি HashSet-এর মতো কাজ করে কিন্তু Thread-Safe এবং মিউটেবল নয়।
ImmutableSet তৈরি করা
import com.google.common.collect.ImmutableSet;
public class ImmutableSetExample {
public static void main(String[] args) {
ImmutableSet<String> colors = ImmutableSet.of("Red", "Green", "Blue");
System.out.println(colors);
// ImmutableSet Builder ব্যবহার
ImmutableSet<String> shapes = ImmutableSet.<String>builder()
.add("Circle")
.add("Square")
.add("Triangle")
.build();
System.out.println(shapes);
// colors.add("Yellow"); // এটি এরর দেবে কারণ ImmutableSet পরিবর্তনযোগ্য নয়।
}
}
ImmutableMap
ImmutableMap কী?
ImmutableMap হল এমন একটি ম্যাপ (map), যা তৈরি হওয়ার পর পরিবর্তন করা যায় না। এটি HashMap-এর মতো কাজ করে কিন্তু আরও সুরক্ষিত এবং অপরিবর্তনীয়।
ImmutableMap তৈরি করা
import com.google.common.collect.ImmutableMap;
public class ImmutableMapExample {
public static void main(String[] args) {
// সরাসরি ImmutableMap তৈরি
ImmutableMap<String, String> countryCapitals = ImmutableMap.of(
"Bangladesh", "Dhaka",
"India", "New Delhi",
"USA", "Washington D.C."
);
System.out.println(countryCapitals);
// ImmutableMap Builder ব্যবহার
ImmutableMap<String, Integer> studentMarks = ImmutableMap.<String, Integer>builder()
.put("Alice", 85)
.put("Bob", 90)
.put("Charlie", 80)
.build();
System.out.println(studentMarks);
// countryCapitals.put("UK", "London"); // এটি কম্পাইল-টাইমে এরর দেবে।
}
}
Immutable Collections কেন ব্যবহার করবেন?
- Thread-Safety: Immutable Collections পরিবর্তন করা যায় না, তাই একাধিক থ্রেড থেকে নিরাপদ।
- কোডের বাগ কমায়: অনিচ্ছাকৃত পরিবর্তন থেকে রক্ষা করে।
- শুধুমাত্র-পড়ার উপযোগী ডেটা (Read-Only Data) সংরক্ষণে কার্যকর।
ব্যবহার ক্ষেত্র
- Configuration Data: Immutable Collections কনফিগারেশন ডেটার জন্য উপযুক্ত।
- Constant Data: যেখানে ডেটা কখনো পরিবর্তন করা হবে না।
- Concurrent Programming: একাধিক থ্রেডের মধ্যে ডেটা সুরক্ষিত রাখতে।
Immutable Collections-এর সীমাবদ্ধতা
- পরিবর্তনযোগ্য নয়, তাই নতুন ডেটা যোগ করতে হলে নতুন Immutable Collection তৈরি করতে হয়।
- বড় ডেটা সেটে কিছুটা বেশি মেমোরি ব্যবহার হতে পারে।
Guava এর ImmutableList, ImmutableSet, এবং ImmutableMap প্রোগ্রামের সুরক্ষা এবং দক্ষতা বাড়াতে গুরুত্বপূর্ণ ভূমিকা পালন করে। এগুলো জাভার স্ট্যান্ডার্ড Collections API-র একটি শক্তিশালী বিকল্প।
Read more